﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;


using System.Data.SqlClient;
using UbicaTuReu.WCF.Dominio;

namespace UbicaTuReu.WCF.Persistencia
{
    public class SalaDAO
    {
        public Sala Crear(Sala salaACrear)
        {
            Sala salaCreado = null;
            string sql = "insert into sala values (@cod,@nom,@descripcion,@ubicacion) ";
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", salaACrear.SalaID));
                    com.Parameters.Add(new SqlParameter("@nom", salaACrear.SalaNombre));
                    com.Parameters.Add(new SqlParameter("@descripcion", salaACrear.SalaDescripcion));
                    com.Parameters.Add(new SqlParameter("@ubicacion", salaACrear.SalaUbicacion));
                    com.ExecuteNonQuery();
                }
            }
            salaCreado = Obtener(salaACrear.SalaID.ToString());
            return salaCreado;
        }

        public Sala Obtener(string codigo)
        {
            Sala salaEncontrado = null;
            string sql = "select * from sala where sal_id=@cod";
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", int.Parse(codigo)));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.Read())
                        {
                            salaEncontrado = new Sala()
                            {
                                SalaID = (int)resultado["sal_id"],
                                SalaNombre = (string)resultado["sal_nombre"],
                                SalaDescripcion = (string)resultado["sal_descripcion"],
                                SalaUbicacion = (string)resultado["sal_ubicacion"],
                            };
                        }
                    }
                }
            }

            return salaEncontrado;
        }


        public Sala Modificar(Sala salaModificar)
        {
            Sala salaCreado = null;
            string sql = "update sala set sal_nombre=@nom, sal_descripcion=@des,sal_ubicacion=@ubi where sal_id=@cod ";
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {

                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@nom", salaModificar.SalaNombre));
                    com.Parameters.Add(new SqlParameter("@des", salaModificar.SalaDescripcion));
                    com.Parameters.Add(new SqlParameter("@ubi", salaModificar.SalaUbicacion));
                    com.Parameters.Add(new SqlParameter("@cod", salaModificar.SalaID));
                    com.ExecuteNonQuery();
                }
            }
            salaCreado = Obtener(salaModificar.SalaID.ToString());
            return salaCreado;
        }


        public void Eliminar(Sala  salaAEliminar)
        {
            string sql = "delete from sala where sal_id=@cod";
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", salaAEliminar.SalaID));
                    com.ExecuteNonQuery();
                }
            }
        }

        public List<Sala> ListarTodos()
        {
            List<Sala> _ListSala;
            string sql = "select * from sala ";
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();

                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        // List<Alumno> _
                        _ListSala = new List<Sala>();
                        while (resultado.Read())
                        {
                            Sala _sala = new Sala();
                            _sala.SalaID = resultado.IsDBNull(0) ? 0 : resultado.GetInt32(0);
                            _sala.SalaNombre = resultado.IsDBNull(1) ? string.Empty : resultado.GetString(1);
                            _sala.SalaDescripcion = resultado.IsDBNull(2) ? string.Empty : resultado.GetString(2);
                            _sala.SalaUbicacion = resultado.IsDBNull(3) ? string.Empty : resultado.GetString(3);
                            _ListSala.Add(_sala);
                        }
                    }
                }

            }
            return _ListSala;
        }
    }
}